home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 July / EnigmA AMIGA RUN 20 (1997)(G.R. Edizioni)(IT)[!][issue 1997-07 & 08][EAR-CD IV].iso / earcd / demo / mag / trash3_2.lha / fuentes / TEXTURE-FUENTES.lha / tunnel9.s < prev    next >
Text File  |  1996-09-21  |  5KB  |  277 lines

  1. ;=========================================================
  2. ; This chunky2planar routine was made by Ludde/Encore.
  3. ;
  4. ; You may uses it for whatever you want, but if you do
  5. ; it would be nice if you gave me credits if you release 
  6. ; anything! :)
  7. ;
  8. ; Send bug-reports, comments, optimise-tips, etc to:
  9. ;               
  10. ;     e-mail: ludvigp@ifi.uio.no       
  11. ;
  12. ;==========================================================
  13.  
  14.         IFD     _PHXASS_
  15.         MACHINE 68030
  16.         ENDIF
  17.  
  18.  
  19.         include "Startup_macros.i"
  20.         include "custom.i"
  21.  
  22. ;------------------ Startup Options ------------------------
  23.  
  24. KillSystem              =       1
  25. SaveInterrupts          =       1
  26. NewCopperList           =       1
  27.  
  28. ScreenWidth             =       320
  29. ScreenHeight            =       128
  30. Bitplanes               =       8
  31.  
  32. ScreenSize              =       ScreenWidth*ScreenHeight
  33. BitplaneSize            =       ScreenSize/8
  34.  
  35. ;-----------------------------------------------------------
  36.  
  37. ChunkyWidth             =       160
  38. ChunkyHeight            =       128
  39.  
  40. ChunkyPixels            =       ChunkyWidth*ChunkyHeight
  41.  
  42. ;ClearChunkyBuffer
  43.  
  44.         Section MainProgram,code
  45.  
  46. j:
  47.  
  48.         SaveSystem
  49.  
  50.         ClrINT  ALL
  51.         ClrINTQ ALL
  52.         ClrDMA  ALL     
  53.  
  54.         jsr     SetupCopperList
  55.  
  56. ;---------
  57.     bsr    _texture
  58. ;---------
  59.  
  60.         move.l  VectorBase,a0
  61.         move.l  #Lev3InterruptHandler,$6c(a0)
  62.  
  63.         SetDMA  DMAF_MASTER!DMAF_RASTER!DMAF_COPPER!DMAF_BLITTER!DMAF_SPRITE
  64.         SetINT  INTF_INTEN!INTF_VERTB
  65.  
  66. MainLoop:
  67.         RastPos s_Render_time
  68.         bsr     Render
  69.         RastPos e_Render_time
  70.  
  71.                                         ;Different routines:
  72.         jsr     c2p_2_Pass              ;1 cpu pass   = c2p_1_pass
  73.                                         ;2 cpu passes = c2p_2_pass
  74.  
  75.         WaitMouse       MLeft,MainLoop
  76.  
  77.         RestoreSystem
  78.  
  79.         move.w  e_Render_time(pc),d0
  80.         sub.w   s_Render_time(pc),d0            ;Cpu c2p rastertime
  81.  
  82.         moveq   #0,d1
  83.         move.w  e_c2p_time(pc),d1
  84.         sub.w   s_c2p_time(pc),d1               ;Cpu c2p rastertime
  85.  
  86.         move.l  TellFrames,d7
  87.         muls.l  #50,d7
  88.         divs.l  TellTicks,d7                    ;Average Frame Rate
  89.  
  90.         rts     
  91.  
  92. s_c2p_time:     dc.w    0
  93. e_c2p_time:     dc.w    0
  94. s_Render_time:  dc.w    0
  95. e_Render_time:  dc.w    0
  96. ;-----------------------------------------------------RENDER
  97.  
  98. Render:
  99.                             ; Here YOU do your stuff! :)
  100. tunel1:
  101.  
  102.     moveq    #0,d1    ; x adder
  103. tunnel:    ;bsr    startq
  104.  
  105.     
  106. mouse:    ;bsr    waitline
  107.     
  108. ;---
  109. ; Texture tunnel code...
  110. ;---
  111.  
  112.  
  113.     movem.l    d0-a6,-(sp)
  114.  
  115.     lea    X,A1    ; X table
  116.     lea    Y,A2    ; Y table
  117.     lea    Texture,A3    ; Texture
  118.     lea    ChunkyBuffer+14*160,A4    ; Buffer
  119.  
  120.     moveq    #0,D6
  121.     moveq    #0,D2
  122.     moveq    #0,D3
  123.     moveq    #0,D4    ; Delta value...
  124.  
  125.     move.w    deltax,d5
  126.     move.w    deltay,d1
  127.     
  128.     move.w    #99,D7    ; Y loop
  129.  
  130. do_y    move.w    #159,D6    ; X loop
  131.  
  132. do_x    move.b    (A1)+,D2    ; X value...
  133.  
  134.     add.b    D5,D2    ; X add
  135.     
  136.     move.b    (A2)+,D3    ; Y value...
  137.     add.b    D1,D3
  138.  
  139.     lsl.w    #8,D3
  140.     add.w    D2,D3    ; (X + Y*256)
  141.  
  142.     move.b    (A3,D3.l),(A4)+
  143.  
  144.  
  145.     dbf    D6,do_x
  146.  
  147. ;    addq.w    #1,d1    ; <----------------
  148.  
  149. ;    add.b    #1,D5
  150.     dbf    D7,do_y
  151.  
  152.     addq.w    #2,deltay    ; Delta Y
  153.     addq.w    #2,deltax    ; Delta X
  154.  
  155.     movem.l    (sp)+,d0-a6
  156.     rts
  157.  
  158. X    incbin    x.bin
  159. Y    incbin    y.bin
  160.  
  161. Texture    blk.b    256*256,0
  162. Secure    blk.b   512,0
  163.  
  164. deltax    dc.w    0
  165. deltay    dc.w    0
  166.  
  167. ;-------------------------------
  168.  
  169. _texture
  170.     bsr    InitRND
  171.  
  172.     lea    RNDSeed,a1
  173.     lea    Texture,a2
  174.     
  175.     move    #$FFFF,d7
  176.  
  177. do_texture
  178.     moveq    #0,d0
  179.     moveq    #32,d1
  180.     
  181.     bsr    RND
  182.     
  183.     move.b    d0,(a2)+
  184.  
  185.     dbf    d7,do_texture
  186.  
  187.     move.w    #255,d7
  188.     lea    Secure,a2
  189. extra_txt
  190.     moveq    #0,d0
  191.     moveq    #32,d1
  192.  
  193.     bsr    RND
  194.  
  195.     move.b    d0,(a2)+
  196.  
  197.     dbf    d7,extra_txt
  198.  
  199. ;    rts            
  200. ;-------------
  201.  
  202. inter2    moveq    #10,d6
  203. inter21
  204.     lea    Texture,a1
  205.     lea    Texture+256,a2
  206.     lea    Texture+1,a3
  207.     lea    Texture+2,a4
  208.     lea    Texture,a5
  209.  
  210.  
  211.     move    #$FFFF,d7
  212.  
  213. interpol    
  214.     moveq    #0,d0
  215.     moveq    #0,d1
  216.     moveq    #0,d2
  217.     moveq    #0,d3
  218.  
  219.     move.b    (a1)+,d0
  220.     move.b    (a2)+,d1
  221.     move.b    (a3)+,d2
  222.     move.b    (a4)+,d3
  223.  
  224.     add    d0,d1
  225.     add    d2,d3
  226.     add    d1,d3
  227.  
  228.     lsr.w    #2,d3
  229.  
  230.     move.b    d3,(a5)+
  231.  
  232.     dbf    d7,interpol            
  233.  
  234.     dbf    d6,inter21    
  235.  
  236.     RTS
  237.  
  238. * D0,D1 - A1
  239. * In  : D1 Numero maximo
  240. * Out : D0 Numero entre 1 y D1
  241.  
  242. RND    LEA    RNDSeed,A1    ; D0 = Numero entre 1 y D1
  243.     MOVE.L    (A1),D0
  244.     ADD.L    D0,D0
  245.     BHI.s    .OVER
  246.     EORI.L    #$1D872B41,D0
  247. .OVER    MOVE.L    D0,(A1)
  248.     ANDI.L    #$FFFF,D0
  249.     DIVU    D1,D0
  250.     SWAP    D0
  251.  
  252.     RTS
  253.  
  254. InitRND    LEA    RNDSeed,A0
  255.     MOVE.L    $DFF006,D0
  256.     NEG.W    D0
  257.     MOVE.L    D0,(A0)
  258.         rts      
  259.                  
  260. RNDSeed    dc.l    0
  261.  
  262. ;-----------------------------------------------------
  263.  
  264.         Section ChunkyStuff,bss
  265.         
  266. ChunkyBuffer:
  267.         blk.b   ChunkyPixels
  268. ChunkyEnd:
  269. ;Texture    ds.b    256*256
  270.  
  271.  
  272. ;-----------------------------------------------------------------------------
  273.         include "Blitter_c2p.i"
  274.         include "Startup_code.i"
  275.  
  276.